home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 16 / AMIGAplus Sonderheft 16 (1998)(ICP)(DE)[!].iso / rexx / importtexte.amicad < prev    next >
Text File  |  1998-05-24  |  2KB  |  71 lines

  1. /* Importation d'un texte dans une zone rectangulaire */
  2. /* $VER: ImportTexte 1.00 (© R.Florac, 26 avril 1998) */
  3. /* Bug: ne gère pas les guillemets, les échelles et le mode placement courants */
  4.  
  5. options results
  6.  
  7. signal on error
  8. signal on syntax
  9.  
  10. 'FIRSTSEL'; obj=result
  11. if obj>0 then do
  12.     'TYPE('obj')'
  13.     if result=22 then do
  14.     'NEXTSEL('obj')'
  15.     if result=0 then do
  16.         'COORDS('obj')';
  17.         PARSE VAR result x0 ',' y0 ',' x1 ',' y1
  18.         xg=minima(x0,x1); xd=maxima(x0,x1)
  19.         yh=minima(y0,y1); yb=maxima(y0,y1)
  20.         'REQFILE("Nom du fichier texte?", "Travail:texte/ASCII")'; fichier=result
  21.         if fichier ~= "" then do
  22.         if open(file, fichier, 'R') then do
  23.             y0=y0+10
  24.             'SAVEALL(-1)'
  25.             do while y0 < y1
  26.             ligne=readln(file)
  27.             if ligne ~= "" then do
  28.                 ligne=translate(ligne,"        ",'09'x)
  29.                 'WRITE("'ligne'",'x0','y0')'; e=result
  30.                 if e=0 then do
  31.                 'REQUEST("Placement du texte"+CHR(10)+"'ligne'"+CHR(10)+"impossible."+CHR(10)+"Voulez-vous continuer?")'
  32.                 if result=0 then leave
  33.                 end
  34.                 y0=y0+10
  35.             end
  36.             if eof(file) then leave
  37.             end
  38.             close(file)
  39.         end
  40.         end
  41.         exit
  42.     end
  43.     end
  44. end
  45.  
  46. 'MESSAGE("Créez et sélectionnez"+CHR(10)+"d''abord le rectangle"+CHR(10)+"dans lequel doit"+CHR(10)+"être placé le texte")'
  47.  
  48. exit
  49.  
  50. minima: procedure
  51.     parse arg v1,v2
  52.     if v1<v2 then return v1
  53.     return v2
  54. end
  55.  
  56. maxima: procedure
  57.     parse arg v1,v2
  58.     if v1>v2 then return v1
  59.     return v2
  60. end
  61.  
  62. /* Traitement des erreurs, interruption du programme */
  63. syntax:
  64. erreur=RC
  65. 'MESSAGE("Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
  66. exit
  67.  
  68. error:
  69. 'MESSAGE("Erreur en ligne 'SIGL'")'
  70. exit
  71.